<?php
class MiebrosCompaniasModel extends Model
{
	
	private $_nameTable = "SC_EmpresaSocios";
	
	public function __construct()
	{
		parent::Model();
	}
	
	
    public function loadRegistros()
	{
		
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
		
	}
	
	/**
	 * 
	 * Obtiene todos los registros.
	 * @param unknown_type $resurt
	 */

	private function _getArrayFromQueryResult($resurt)
	{
		if($resurt->num_rows() == 0){
			return false;
		}
		
		$registros = array();
		
		foreach($resurt->result() as $record){
			$registros[] = new MiebrosCompaniaTable($record);
		}
		
		return $registros;
	}
	
	
	/**
	 *  Obtiene los valores enum de una tabla
     * y los combierto en un array
     * para manejarlos como una lista desplegable.
	 * recibe como parametro el nombre de la tabla.
	 * @param unknown_type $nombreCampo
	 */
   public function getValueEnumsMiembros($nombreCampo)
   {

   	   $query = mysql_query("SHOW COLUMNS FROM $this->_nameTable LIKE '$nombreCampo'");
   	   $result = mysql_fetch_array($query);
   	  
   	   $resultado =  explode("','",preg_replace("/(enum|set)('(.+?)')/", "2",$result[1]));
   	   
   	   $returnFirma =  str_replace(array("enum('", "')"), array("", ""), $resultado); 
   	   
   	   return $returnFirma;
   	   
   }
   
	
	/**
	 * buscar registros por id
	 * @param integer $id
	*/
    public function loadRegistrosById($id)
	{
		$query = $this->db->get_where($this->_nameTable, array('id_empresa' => $id));
		
		if($query->num_rows() == 0)
			return false;
		
		return $this->_getArrayFromQueryResult($query);
		
	}
	
	
	/**
	 * Poder de Firma
	 */
	 public function getPorderApertura($idEmpresa)
	 {
	 	
	 	$query = $this->db->get_where($this->_nameTable, array('id_empresa' => $idEmpresa));
		
	    $this->db->where("id_empresa", $idEmpresa);
		$this->db->where("poder_firma", 1);
		
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
		
	 }
	
	/**
	 * 
	 * Recibe por parametro el id de la empresa
	 * y busca el socio donde tipo_socio sea igual
	 * a Gerente
	 * @param  integer $idEmpresa
	 */
	public function obtenerPresideAsamblea($idEmpresa)
	{
		
		$this->db->where("id_empresa", $idEmpresa);
		$this->db->where("preside_asamblea", 1);
		
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
		
	}
	
	/**
	 * 
	 * Busca todos los miembro que son gerentes de la compania
	 * 
	 * @param interger $idEmpresa
	 */
	
	public function obtenerTodosGerentes($idEmpresa)
	{
		
		$this->db->where("id_empresa", $idEmpresa);
		$this->db->where("tipo_socio", "Gerente");
		
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
		
	}
	
	
	/**
	 * buscar registros por id
	 * @param integer $id
	*/
    public function loadRegistrosByIdMiembro($id)
	{
		$query = $this->db->get_where($this->_nameTable, array('id_socio' => $id));
		
		if($query->num_rows() == 0)
			return false;
		
			return new MiebrosCompaniaTable($query->row());
		
	}
	
	/**
	 * 
	 * Enter description here ...
	 * @param integer $idCompania
	 */
	public function setPresideAsamble($data, $idCompania)
	{
		
		if($this->db->update($this->_nameTable, $data, array("id_empresa" => $idCompania))){
			
			return true;
		}
			return false;
			
	}
	
	
  /**
     * Agregar un registro
     * @param  $data
     */
	public function agregar($data)
	{
		if($this->db->insert($this->_nameTable, $data)){
			
			return true;
		}
		
			return false;
		
	}
	
	/**
	 * 
	 * Editar un registro
	 * @param  $data
	 * @param integer $id
	 */
	public function editar($data, $id)
	{
		if($this->db->update($this->_nameTable, $data, array("id_socio" => $id))){
			
			return true;
		}
			return false;
	}
	
	
	/**
	 * Eliminar un registro.
	 * @param integer $id
	 */
	public function eliminar($id)
	{
		if($this->db->delete($this->_nameTable, array("id_socio" => $id))){
			
			return true;
		}
		
		    return false;
	}
	
}


class MiebrosCompaniaTable
{
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_id_socio
	 */
	private $_id_socio = 0;
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_idEmpresa
	 */
	private $_idEmpresa = 0;
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_nombreApellido
	 */
	private $_nombreApellido = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_nacionalidad
	 */
	private $_nacionalidad = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_tipo_documento
	 */
	private $_tipo_documento = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_no_identificacion
	 */
	private $_no_identificacion = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_estado_civil
	 */
	private $_estado_civil = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_cuotas
	 */
	private $_cuotas = 0.0;
	
	/** 
	 * 
	 * Enter description here ...
	 * @var $_domicilio
	 */
	private $_domicilio = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_valor_cuotas
	 */
	private $_valor_cuotas = "";
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_tipo_socio
	 */
	private $_tipo_socio = "";
	
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_preside_asamblea
	 */
	private $_preside_asamble;
	
	
	/**
	 * 
	 * Enter description here ...
	 * @var $_poder_firma
	 */
	private $_poder_firma;
	
	/**
	 * 
	 * Enter description here ...
	 * @param  $objeto
	 */
	public function __construct($objeto)
	{
		
		$this->_id_socio           = $objeto->id_socio;
		$this->_idEmpresa          = $objeto->id_empresa;
		$this->_nombreApellido     = $objeto->nombre_completo;
		$this->_nacionalidad       = $objeto->nacionalidad;
		$this->_tipo_documento     = $objeto->tipo_documento;
		$this->_no_identificacion  = $objeto->no_identificacion;
		$this->_estado_civil       = $objeto->estado_civil;
		$this->_cuotas             = $objeto->cuotas;
		$this->_domicilio          = $objeto->domicilio;
		$this->_valor_cuotas       = $objeto->valor_cuotas;
		$this->_tipo_socio         = $objeto->tipo_socio;
		$this->_preside_asamble    = $objeto->preside_asamblea;
		$this->_poder_firma        = $objeto->poder_firma;
		
		
	}
	
	
	/**
	 * @return the $_poder_firma
	 */
	public function getPoder_firma() {
		return $this->_poder_firma;
	}

	/**
	 * @param $_poder_firma $_poder_firma
	 */
	public function setPoder_firma($_poder_firma) {
		$this->_poder_firma = $_poder_firma;
	}

	/**
	 * @return the $_id_socio
	 */
	public function getId_socio() {
		return $this->_id_socio;
	}

	/**
	 * @return the $_idEmpresa
	 */
	public function getIdEmpresa() {
		return $this->_idEmpresa;
	}

	/**
	 * @return the $_nombreApellido
	 */
	public function getNombreApellido() {
		return $this->_nombreApellido;
	}

	/**
	 * @return the $_nacionalidad
	 */
	public function getNacionalidad() {
		return $this->_nacionalidad;
	}

	/**
	 * @return the $_tipo_documento
	 */
	public function getTipo_documento() {
		return $this->_tipo_documento;
	}

	/**
	 * @return the $_no_identificacion_no_identificacion
	 */
	public function getNo_identificacion() {
		return $this->_no_identificacion;
	}

	/**
	 * @return the $_estado_civil
	 */
	public function getEstado_civil() {
		return $this->_estado_civil;
	}

	/**
	 * @return the $_cuotas
	 */
	public function getCuotas() {
		return $this->_cuotas;
	}

	/**
	 * @return the $_domicilio
	 */
	public function getDomicilio() {
		return $this->_domicilio;
	}

	/**
	 * @return the $_valor_cuotas
	 */
	public function getValor_cuotas() {
		return $this->_valor_cuotas;
	}

	/**
	 * @return the $_tipo_socio
	 */
	public function getTipo_socio() {
		return $this->_tipo_socio;
	}

	/**
	 * @param field_type $_id_socio
	 */
	public function setId_socio($_id_socio) {
		$this->_id_socio = $_id_socio;
	}

	/**
	 * @param field_type $_idEmpresa
	 */
	public function setIdEmpresa($_idEmpresa) {
		$this->_idEmpresa = $_idEmpresa;
	}

	/**
	 * @param field_type $_nombreApellido
	 */
	public function setNombreApellido($_nombreApellido) {
		$this->_nombreApellido = $_nombreApellido;
	}

	/**
	 * @param field_type $_nacionalidad
	 */
	public function setNacionalidad($_nacionalidad) {
		$this->_nacionalidad = $_nacionalidad;
	}

	/**
	 * @param field_type $_tipo_documento
	 */
	public function setTipo_documento($_tipo_documento) {
		$this->_tipo_documento = $_tipo_documento;
	}

	/**
	 * @param field_type $_no_identificacion
	 */
	public function setNo_identificacion($_no_identificacion) {
		$this->_no_identificacion = $_no_identificacion;
	}

	/**
	 * @param field_type $_estado_civil
	 */
	public function setEstado_civil($_estado_civil) {
		$this->_estado_civil = $_estado_civil;
	}

	/**
	 * @param field_type $_cuotas
	 */
	public function setCuotas($_cuotas) {
		$this->_cuotas = $_cuotas;
	}

	/**
	 * @param field_type $_domicilio
	 */
	public function setDomicilio($_domicilio) {
		$this->_domicilio = $_domicilio;
	}

	/**
	 * @param field_type $_valor_cuotas
	 */
	public function setValor_cuotas($_valor_cuotas) {
		$this->_valor_cuotas = $_valor_cuotas;
	}

	/**
	 * @param field_type $_tipo_socio
	 */
	public function setTipo_socio($_tipo_socio) {
		$this->_tipo_socio = $_tipo_socio;
	}

	
	/**
	 * @return the $_preside_asamble
	 */
	public function getPreside_asamble() {
		return $this->_preside_asamble;
	}

	/**
	 * @param field_type $_preside_asamble
	 */
	public function setPreside_asamble($_preside_asamble) {
		$this->_preside_asamble = $_preside_asamble;
	}
	
}